디버그 동작

 

디버깅을 위해 일반적으로 사용되는 동작은 Run 메뉴 항목 아래에서 그룹 됩니다:



대부분의 동작은 또한  Debug window 왼쪽 툴바에서 이용할 있습니다.

Debug  

디버깅( optionally Debug 다이얼로그를 엽니다) 시작하고, 메뉴에서 모든 디버그 옵션을 사용 가능하게 합니다.

Reload Changed  Classes  

리로드는 디버깅 동안 클래스를 변경했습니다.  만일 당신의 코드에서 아무 것도 바뀌지 않는다면, 불가능합니다.

상세한 것은  HotSwap  서브 섹션을 보십시오.

Step Over  

현재 메소드의 다음 라인으로의 스텝합니다.  만일 현재 라인이 메소드에서 최종 하나라면, 메소드 후에 바로 실행했던 라인으로 스텝 하십시오.


당신은 다음을 해서 스테핑 속도를 개선할 있습니다:

1.  Alternate collections view  끄십시오.

Debug 보기의 Frame 탭에서 오른쪽 버튼을 클릭하고, Customize View...  선택하고 상응하는 체크 박스를 해제합니다.

 

2.  'ToString' 모드를 끕니다.
File SettingsIDE Settings | Debugger   패널에서 그리고 IDE 수준을 위한 모드를 불가능하게 하는 Types to be shown as 'ToString()' 선택 그룹에서 None 옵션 버튼을 선택합니다.

 OR
오브젝트 노드상의 Debug 보기의 Frame 또는 Watch 탭에서 오른쪽 버튼을 클릭하고 Types to be shown as 'ToString()' 선택 그룹에서 None 옵션 버튼을 특히 선택하는 노드에 대한 모드를 불가능하게 합니다. 


만일 스테핑하는 동안 일부 표현식 계산이 완료되지 않으면 그런 계산 프로세스는 이상 종료될 것이고 표현식은 계산되지 않을 것입니다.


Step Into  

현재의 실행 포인트에서 불려진 메소드로 스텝합니다 (만일 메소드가 스킵

그것들 중의 하나라면 디버거는 Step over 동작을 수행하는 같이 동작할 것입니다. )

Force Step  Into  

비록 메소드가 스킵 되었다 해도 현재의 실행 포인트에서 불려진 메소드로 스텝합니다.

Step Out  

후에 실행 라인으로 현재의 메소드를 스텝 아웃 합니다.

 

Run To Cursor  

캐럿이 에디터에서 현재 배치된 라인에서 프로그램 실행과 중지를 재개합니다.  일단 당신의 프로그램 실행이 중지되면, 실제로 제거된 현재 캐럿 라인에 대한 임시 브레이크 포인트 세트가 있습니다. 따라서 이미 실행되었던 라인에 캐럿이 배치되면, 실행을 위해 프로그램은 또한 재개 것이고 이전 브레이크 포인트로 롤백하는 방법이 없습니다.

당신이 메소드 시퀀스에 깊게 스텝하고 한번에 여러 메소드 밖으로 스텝 아웃 , 동작은 특별히 유용합니다.


만일 당신을 지정한 라인으로 데리고 가기전에 실행되어야만 하는 라인에 대한 브레이크 포인트 세트가 있다면, 디버거는 처음 브레이크 포인트가 만났던 곳에서 중지할 입니다.


프로그램 실행이 정기적으로 중단되어서는 안되는 동안 당신이 특정의 라인에 일시적인 일종의 브레이크 포인트를 필요할 동작을 사용하십시오.


Pop Frame  

메소드 실행을 중단하고 스택으로부터 현재 메소드 프레임을 드롭하는 실행 포인트를 메소드 뒤로 이동하십시오. 예를 들면, Debug 윈도우의 열린 Threads  탭에서 당신은 필요한 메소드를 찾을 있고 Pop Frame  발견할 있습니다.  그것은 메소드와 메소드 자체 위에서 모든 프레임을 떨어뜨릴 것입니다.

Pause Program/  

Resume Program  

메뉴 항목을 사용하면, 당신은 당신이 필요한 어떤 시간에라도 디버그되는 당신의 프로그램을 중지하고, 재개할 있습니다.  이것들은 그것들 하나가 사용되는 때에 동기화 되는 메뉴 항목들입니다, 다른 것이 사용가능 하게 그것은 불가능하게 됩니다.

 

Stop Program  

프로그램 실행을 정지합니다.

Evaluate Expression...  

당신이 현재 어떤 값에 관심있어 하는가 라는 표현식의 빠른 평가를 위한  Expression Evaluation 다이얼로그를 엽니다

Quick Evaluate Expression  

선택된 변수의 또는 캐럿이 위치하는 참조를 표시하고 있는 툴팁을 엽니다.  그것은 원하는 변수 위에 마우스 포인터를 잡는 것과 유사합니다.

Show Execution Point  

에디터의 현재의 실행 점을 강조하고,  Frame  탭에서 상응하는 스택 구조를 표시합니다.

Toggle Line/Method/Field Breakpoint  

현재의 문맥에 부합하고 있는 브레이크 포인트를 더하거나/제거합니다.  문맥에 의존하는 것을 사용 가능하게 하거나, 불가능하게 합니다.


홈통 영역에 있는 클릭하면 라인 브레이크 포인트를 추가합니다.  그리고 만일 가능하다면 Alt(Alt + Click) 홀딩하면 현재 문맥에 상응하는 라인/메소드/필드 브레이크 포인트를 추가 하는 동안 홈통 영역에서 클릭합니다.


Toggle Breakpoint Enabled  

현재 선택된 브레이크 포인트( 상태에 의존하는 ) 사용 가능하게 하거나, 불가능하게 합니다. 브레이크 포인트 위를 Alt + Click 하거나 브레이크 포인트를 오른쪽 버튼을 클릭한 후에 나타나는 문맥 메뉴에서 Enable/Disable 선택합니다.

 

View Breakpoints  

브레이크 포인트를 관리하기 위해  Breakpoints 다이얼로그를 엽니다.

Export Threads...  

현재의 스레드의 상태를 저장하는 것을 허용합니다.  당신은 타겟 파일을 지정하거나 클립보드로 정보를 카피할 있는 곳에서 Export Threads  여십시오. 저장하기 전에, 당신은 또한 저장되는 정보를 편집할 있습니다.

Suspend all  threads while stepping  

버튼은 Debug Window  존재합니다.

 스테핑 하는 동안 만일 그것이 off (디폴트) 되면 오로지 당신이 스테핑- 하는 쓰레드만이 중지될 입니다.
  
만일 그것이 on 이라면 : 

1.  라인 브레이크 포인트가 도착될 , 모든 실행 스레드는 중지됩니다.

2.  스테핑일 , 단계가 완료되고 후에 모든 스레드는 중지될 것입니다.

 

 

표현식 다이얼로그의 평가


Expression Evaluation  다이얼로그는 개의 모드를 가집니다.  Expression Mode  모드는 당신이 Expression 콤보 박스에서 싱글 라인의 표현식을 평가하는 것을 가능하게 합니다.



Code Fragment Mode Code fragment 텍스트 필드에서 그들을 생성하는 짧은 코드 일부를 평가하는 것을 가능하게 합니다. 지원된 구성체는 선언, 할당, 루프(for, while, do...while) 그리고 if/else 입니다.


비록 애플리케이션 메소드가 불려지고 모든 디버거 기능이 가능하게 유지된다 하더라도Debugger  지금 IDEA UI 잠그지 않습니다.


표현식을 입력하면서 당신은  Code Completion  , Error Highlighting  , Surround with...  , Quick JavaDoc  , External JavaDoc  같은 편리한 편집 특성을 사용할 있습니다.


표현식이 기대된(예를 들면 라인 브레이크 포인트를 위한 상태) 모든 디버거 텍스트 필드에서 편집 특징은 이용할 있습니다.



평가 결과를 얻기 위해서, Evaluate 버튼을 누르거나 Expression  / Code Fragment 모드에서 Enter  / Ctrl + Enter 키를 누릅니다.

다이얼로그는 당신이 IDEA로부터 나오기 전까지 모든 최근의 평가된 표현식을 저장합니다.
표현식은 항상 Debug 창의 Frame  탭에서 현재 선택된 스택 구조의 문맥에서 평가됩니다.  만일 표현식이 평가될 없으면, 가능한 이유는 Result 윈도우에서 간략히 기술될 것입니다.


당신이 규칙적으로 평가된 표현식의 일부를 필요하지 않을 기능를 사용하십시오.


기능에 대한 대체는 당신이 "장기적인 기억 장치" 위해 가장 자주 사용되는 표현식을 추가할 있는 디버그 창의 Watches 탭입니다.



Expression Evaluation  특징을 사용하면서, 당신은 또한 다음을 알고 있어야만 합니다:

1.  디버거가 브레이크 포인트에 멈추고 실행이 중지되지 않았을 때에만 메소드는 Expression Evaluation  다이얼로그 내에서 호출될 있습니다.

2.  만일 Expression Evaluation 내에서 호출된 메소드가 보디의 내부에서 브레이크 포인트를 가지면, 디버거는 그것에서 멈춥니다.

3.  그러나, Expression Evaluation  오로지 "하나의 레벨" 있습니다.  바꾸어 말하면, 만일 Expression Evaluation로부터 불려지는 메소드 내의 브레이크 포인트에서 IDEA 정지하면 당신은 Expression Evaluation 특징을 다시는 사용할 없습니다.